硬件:ESP32-S3-DevKitC-1(WROOM-1)· ESP32-C5-DevKitC-1(Bus Expander)· CC1101 · PN532 · 38K 红外收发 · MB-102 电源模块 固件:ESP32-Bit-Pirate v1.4(DEVICE_S3DEVKIT)+ ESP32-Bus-Expander(c5slave)
一、电源系统(USB / DC 二选一或同时)★ 最终版:MB-102 骑轨直连,零外接二极管
USB 插 S3 自己的 USB 口。防倒灌完全依赖 S3 板上自带的 USB→5V 引脚二极管(官方 DevKitC-1 原理图),面包板上不需要接任何二极管。
从 | 经 | 到 |
MB-102 5V 输出(骑在面包板端部供电轨上,跳线拨 5V 挡) | 直连(输出即红轨) | 5V 红轨(顶部红轨 = 5V 公共总线) |
S3 的 5V 引脚 | 直连(防倒灌靠板上自带二极管,无需外接) | 5V 红轨 |
5V 红轨 | — | C5 的 VIN(5V) 引脚 |
S3 的 3V3 引脚(板载稳压器输出) | — | 底部红轨作 3V3 母线 → CC1101 / PN532 / 红外的 VCC |
470µF/10V 电解电容 | 长脚(+)+红轨、短脚(−)−蓝轨 | 吸收 Wi-Fi 发射电流尖峰 |
100nF + 100µF(可选) | 并在 3V3 母线上 | 给 CC1101/PN532 滤波 |
三种工况均成立:
- 只插 DC → 红轨 5.0V,S3/C5/模块全活;
- 只插 USB(到 S3)→ S3 5V 脚送出约 4.8V 上红轨,C5 与模块照常工作。此时必须把 MB-102 两个跳线帽整个拔下(悬空即 OFF),切断倒灌进未上电稳压器的路径;插回 DC 后再把帽插回 5V 位置(模块上的拨动开关切断的是输入侧,防倒灌不可靠,以拔跳线帽为准);
- 双插 → MB-102(5.0V) 高于 USB 送来的 4.8V,自动接管红轨,S3 板上二极管反偏隔离 USB,串口照常可用。
骑轨注意事项:
- 跳线帽拔下 = 该侧 OFF(不是拨到某个挡位);帽插 5V 侧 = 红轨 5V,插 3V3 侧 = 红轨 3.3V(拨错到 3V3 会让 C5 欠压);
- 检查 830 板红轨中点是否有断缝,有则用跳线桥接两段;
- 蓝轨由 MB-102 的 GND 直通,作为公共地没问题;蓝色轨 = GND 公共地,S3、C5、MB-102、所有模块全部共地。
- ⚠️ MB-102 的 3V3 轨不要与 S3 的 3V3 并联;模块 3V3 统一取自 S3。
- ⚠️ CC1101 只接 3V3,绝对不能接 5V。
- 全负荷峰值约 1A:纯 USB 供电时电脑口(500mA)偏紧,重负载建议 ≥2A 充电头或走 DC 路。
备选方案(两种情况才用)
A. 嫌拔跳线帽麻烦:MB-102 不骑轨,放旁边,输出串一只 SS34(3A)上红轨,S3 的 5V 引脚直连红轨不变 → 双电源全自动二选一,无需任何手动操作。
B. 杂牌克隆板没有板上防倒灌二极管(测试法:只插 MB-102 供电、USB 插电脑但空置,看电脑是否识别出上电设备/S3 USB 口发热):改为双二极管对称方案——
- USB 侧取电 → SS34 → 红轨;MB-102 5V → SS34 → 红轨(两只对称 OR),MB-102 此时不骑轨
- 红轨 → S3 与 C5 的 VIN 均直连
- 压降多 0.3V,VIN≈4.4V,两板稳压器仍正常工作
二、S3 ↔ C5(Bus Expander,UART 交叉)★ 按固件默认值接线
S3 | C5 | 说明 |
G18(TX,固件默认) | G9(RX) | S3 发 → C5 收 |
G17(RX,固件默认) | G10(TX) | C5 发 → S3 收 |
GND | GND | 必须直连共地 |
(供电走红轨→VIN) | — | — |
⚠️ C5 侧引脚以自编译固件为准:RX_PIN=9, TX_PIN=10(源码 slave_unified_c5.cpp 明确定义)。网上/旧文档"G9=TX、G10=RX"的说法对应的是旧假设,照那个接必反。
- S3 侧引脚不需要 platformio.ini,也不需要手动改配置:终端敲
expander,RX/TX 两步直接回车采用默认值(实测默认 RX=17、TX=18),配完 115200 8N1 自动建桥。
- 看到
Expander UART configured (115200 8N1).+Expander Connected: Starting...即接通;exit退出桥接。
- 若日后修改过配置,接线以"最后一次配置"为准;接线必须与配置一致,桥不通优先怀疑 TX/RX 没交叉或没共地。
- ✅ Expander 已测试通过(2026-09-25 01:05):
expander握手 OK,可进mode(WiFi EXP 等协议模式)。C5 固件为本地自编译诊断版(/tmp/bus-expander,ARDUINO_USB_MODE=0修正 + USB 诊断镜像:C5 的 UART 收发全部镜像到 USB 口,可用串口监视器观察桥接流量,不影响正常功能)。想要无诊断输出的纯净版,去掉 C5Diag 相关代码重编译即可。
- 根因备忘:官方预编译固件(Web Flasher 与 v0.2 release)platformio.ini 缺
ARDUINO_USB_MODE=0,Serial 落到 UART0 默认引脚而非 G9/G10——握手失败不是接线问题。
上电顺序(重要:G9 是 BOOT 脚)
C5 的 G9 是 BOOT 引脚,只在复位瞬间被采样。实测这块 C5-DevKitC-1 的 G9 悬空时没有内部上拉(拔掉 UART 线复位照样进下载模式),所以复位瞬间必须有东西把 G9 拉高——正式接线里这个角色就是 S3 上电后 G18 的 TX 空闲高电平。S3 未上电或线未插,C5 复位即进下载模式(串口日志显示
boot:0x8 DOWNLOAD,固件不运行)。正确顺序:
- 先给 S3 上电(MB-102 或 USB),最好先进一次
expander让 G18 配成 TX(空闲高电平);
- 再给 C5 上电或按 RST → 正常启动,LED 亮青色;
- 已经在跑的 C5 后插线没问题——G9 只影响复位,不影响运行中的 UART;
- 若偶尔需要 C5 脱离 S3 单独跑(如裸连电脑调试):临时用一根线把 C5 G9 接 C5 3V3 再复位即可(仅拉高 BOOT 脚,不影响 UART)。
排查口诀:C5"没反应"先看串口日志有没有
DOWNLOAD 字样——有就是 G9 在复位瞬间没被拉高(S3 没上电 / G18↔G9 线没插好 / 线拔了),拔线只会更糟,把线插回且 S3 供电后按 RST 即恢复。三、CC1101(Sub-GHz)
CC1101 | S3 | 说明 |
VCC | S3 3V3 | ⚠️ 严禁 5V |
GND | GND | 共地 |
SCK | G12 | 默认 |
MISO | G13 | 默认 |
MOSI | G14 | 默认 |
CSN | G15 | 默认 |
GDO0 | G10(原 G27 不存在于排针) | mode subghz → config 修改 |
GDO2 | G11(可选) | 不用可悬空 |
- 天线必须与所测频段匹配(433/868/915MHz)。
四、PN532(RFID,拨码开关拨到 I2C)
PN532 | S3 | 说明 |
VCC | S3 3V3 | — |
GND | GND | 共地 |
SDA | G1 | 默认,不用改 |
SCL | G2 | 默认,不用改 |
五、38K 红外收发
模块引脚 | S3 | 说明 |
VCC | S3 3V3 | — |
GND | GND | 共地 |
接收头 OUT | G4(原 G1 与 PN532 SDA 冲突) | mode infrared → config 修改 |
发射管 IN | G5(原 G44=RXD0 被串口芯片占用) | mode infrared → config 修改 |
六、改配置的顺序
- 按 1–5 全部接好线,先不接 GDO0/红外两根待改的信号线(或接好后立即改 config);
- USB 连电脑,串口 115200 进 CLI;
mode subghz→config:GDO0 改为 G10;
mode infrared→config:RX 改 G4、TX 改 G5;
mode rfid→config:确认 SDA=G1、SCL=G2;
- 终端敲
expander→ RX/TX 均直接回车采用默认值(实测默认 RX=17、TX=18,接线已按默认值交叉接好)→ 看到 "Expander Connected" 即验证通过(Web Flasher 预编译固件即可,无需自编译);
- 改完的配置存 NVS,断电不丢。
七、DevKitC-1 避坑引脚(不要用)
- G0:BOOT 键
- G19/G20:USB 数据脚(D-/D+)
- G43/G44:TXD0/RXD0,接板载 USB 转串口芯片
- G26–G32:模块内部 Flash,排针上本来就没有
- G35–G37:N8R8 版被 Octal PSRAM 占用
- G45/G46:strapping 引脚
- G48/G38:板载 RGB LED(v1.0/v1.1 位置不同)
八、日常上电流程(脱离电脑)
- MB-102 接 7-12V DC 适配器(或只插 USB 充电头,二选一/都插均可);
- 上电后 3 秒内短按 BOOT → WiFi Connect(长按 → 热点模式);
- LED 白(连接中)→ 绿(成功)后,浏览器打开固定 IP(路由器 DHCP 静态绑定 MAC)进入 WebUI;
- 所有模式切换与命令与串口 CLI 相同。